Service chaining is a way of applying a set of network services to a packet flow between a source of data packets and an endpoint (e.g., web server or data server). For example, a service chain may comprise an ordered set of network services that are interconnected through the network to support an application. A specific network service, such as a firewall appliance or network address translation (NAT) appliance may be provided by a hardware appliance or as an instance of a software application running as a virtual machine (VM) on a server. Virtualization of networking in data centers and mobile networks has led to increasing use of dynamic service chains with service instances deployed on virtual machines. A service chain may be formed by routing a packet flow between VMs from one service instance to the next in the service chain.
A service chain may be composed of an ordered sequence of service instances that reside on various service appliances. Each service appliance (which may also be referred to as a service node) applies its service functions (using one or more service instances), such as a firewall or NAT, to data packets that arrive at the service appliance. The service appliance then forwards the data packets on to a next service appliance.
Data packets may also utilize service chain headers. A service chain header may be used to transport a chain identifier (chain ID) and other metadata to network service appliances in the service chain to allow for service selection. However, there are many conventional service appliances that do not support service chain header processing. While upgraded networks often replace existing service appliances with appliances that support service chain header processing, there are still many conventional service appliances that do not support service chain headers and some hardware implemented service appliances that may never provide service chain header processing. Therefore, there is a need for handling data packets directed to service chains that include conventional service appliances that do not support service chain header processing.